package com.meituan.sdk.model.rhone.mtp.orderPayNotice;

import com.meituan.sdk.annotations.ApiMeta;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 订单出票通知
* This file was automatically generated.
*/
@ApiMeta(
    path = "/rhone/mtp/api/order/pay/notice",
    businessId = 66,
    apiVersion = "10018",
    apiName = "order_pay_notice",
    needAuth = false
)
public class OrderPayNoticeRequest implements MeituanRequest<OrderPayNoticeResponse> {
    /**
    * <p data-diff-id="ct-diff-id-87d555b5-c047-4985-b515-21f1cd0f873a"><span style="color: ">合作方出票类型,1: 出票成功,2:出票失败</span></p>
    */
    @NotNull(message = "issueType不能为空")
    @SerializedName("issueType")
    private Integer issueType;
    /**
    * <p data-diff-id="ct-diff-id-6357bb78-36e4-4c60-b9ef-b0b80cbcdb16"><span style="color: ">交互描述，如错误信息等，必须回传</span></p>
    */
    @NotBlank(message = "describe不能为空")
    @SerializedName("describe")
    private String describe;
    /**
    * <p data-diff-id="ct-diff-id-c21b7cf7-9409-4ef4-826b-2abde80b25b6"><span style="color: ">第三方的ID</span></p>
    */
    @NotNull(message = "partnerId不能为空")
    @SerializedName("partnerId")
    private Integer partnerId;
    /**
    * <p data-diff-id="ct-diff-id-cae20dfd-9af1-416f-83a7-eef37a326ad9"><span style="color: ">出票通知接口必须返回body数据</span></p>
    */
    @NotNull(message = "body不能为空")
    @SerializedName("body")
    private MtpOrderPayResponseBody body;

    public Integer getIssueType() {
        return issueType;
    }
    public void setIssueType(Integer issueType) {
        this.issueType = issueType;
    }
    public String getDescribe() {
        return describe;
    }
    public void setDescribe(String describe) {
        this.describe = describe;
    }
    public Integer getPartnerId() {
        return partnerId;
    }
    public void setPartnerId(Integer partnerId) {
        this.partnerId = partnerId;
    }
    public MtpOrderPayResponseBody getBody() {
        return body;
    }
    public void setBody(MtpOrderPayResponseBody body) {
        this.body = body;
    }


    @Override
    public MeituanResponse<OrderPayNoticeResponse> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<OrderPayNoticeResponse>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "OrderPayNoticeRequest{" + "issueType=" + issueType + "," + "describe=" + describe + "," + "partnerId=" + partnerId + "," + "body=" + body + "}";
    }
}
